/**
 *
 */
package ar.com.mun.rowProcessors;

import ar.com.mun.beans.Motivo;
import ar.com.mun.daos.MotivoDAO;

import com.angel.common.helpers.StringHelper;
import com.angel.data.generator.annotations.Inject;
import com.angel.io.annotations.ColumnRow;
import com.angel.io.annotations.RowChecker;
import com.angel.io.annotations.RowProcessor;
import com.angel.io.annotations.RowProcessorCommand;
import com.angel.io.exceptions.InvalidRowDataException;

/**
 * @author William
 *
 */
@RowProcessorCommand
	(
		columnsRow = {
			@ColumnRow( columnName = MotivoAnnotationRowProcessorCommand.NOMBRE_COLUMN, aliases = {"Nombre del Motivo"} ),
			@ColumnRow( columnName = MotivoAnnotationRowProcessorCommand.DESCRIPCION_COLUMN, aliases = {"Descripcion del Motivo"})
		}
	)
public class MotivoAnnotationRowProcessorCommand {

	public static final String NOMBRE_COLUMN = "nombre";
	public static final String DESCRIPCION_COLUMN = "descripcion";

	@Inject
	private MotivoDAO motivoDAO;

    @RowChecker(columnsParameters = {})
    public void checkRowData(String nombre, String descripcion) throws InvalidRowDataException {
		boolean areAllNotEmpty = StringHelper.areAllNotEmpty(nombre, descripcion);
		if(!areAllNotEmpty){
			throw new InvalidRowDataException("Some row data are NULL - " +
					"nombre: [" + nombre+ "] - " +
					"descripcion: [" + descripcion + "].");
		}
		Motivo motivo = this.getMotivoDAO().buscarUnicoOrNuloPorNombre(nombre);
		if(motivo != null){
			throw new InvalidRowDataException("Motivo exist with name [" + nombre + "].");
		}
    }

	@RowProcessor(columnsParameters = {}, object = Motivo.class, inject = true)
	public Motivo processRow(Motivo motivo, String nombre, String descripcion) {
        return motivo;
    }

	/**
	 * @return the motivoDAO
	 */
	public MotivoDAO getMotivoDAO() {
		return motivoDAO;
	}

	/**
	 * @param motivoDAO the motivoDAO to set
	 */
	public void setMotivoDAO(MotivoDAO motivoDAO) {
		this.motivoDAO = motivoDAO;
	}
}
